perm filename MANHDR.TEX[TEX,DEK]8 blob sn#694543 filedate 1983-01-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	% This file is used for experiments on the new TeX manual format
C00011 00003	% Page layout
C00019 00004	% Chapter formatting
C00022 00005	% Composition macros
C00032 00006	% Macros for drawing figures (leave out of Appendix E)
C00036 00007	% indexing macros
C00039 ENDMK
C⊗;
% This file is used for experiments on the new TeX manual format
% Font definitions
\let\oldtenrm=\tenrm % very temporary substitutions during font development
\font\oldeightsss=cmsss8
\textfont8=\oldtenrm
\mathchardef\Omega"80A
\mathchardef\Psi"809
\mathchardef\Phi"808
\mathchardef\Upsilon"807
\mathchardef\Sigma"806
\mathchardef\Pi"805
\mathchardef\Xi"804
\mathchardef\Lambda"803
\mathchardef\Theta"802
\mathchardef\Delta"801
\mathchardef\Gamma"800

\font\inchhigh=aminch
\font\titlefont=ambig

\font\ninerm=cmr9
\font\eightrm=cmr8
\font\sixrm=cmr6

\font\ninei=cmi9
\font\eighti=cmi8
\font\sixi=cmi6

\font\ninesy=amsy9
\font\eightsy=amsy8
\font\sixsy=amsy6

\font\eightss=cmss8

\font\eightsss=amsss8 % currently best version, lacks Greek

\font\ninebf=cmb9
\font\eightbf=cmb8

\font\ninett=cmtt9
\font\eighttt=cmtt8

\font\ninesl=cms9
\font\eightsl=cms8

\font\nineit=cmti9
\font\eightit=cmti8

\font\tenu=cmu10
\font\magnifiedfiverm=cmr5 at 10pt

\font\tenrm=amr10 % temporary substitutions during font development
\font\tentt=amtt
\font\tenbf=ambx10
\let\mainfont=\tenrm
\textfont0=\tenrm
\let\oldninerm=\ninerm
\font\ninerm=amr9

\def\tenpoint{\def\rm{\fam0\tenrm}%
  \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm
  \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei
  \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy
  \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \def\it{\fam4\tenit}%
  \textfont4=\tenit
  \def\sl{\fam5\tensl}%
  \textfont5=\tensl
  \def\bf{\fam6\tenbf}%
  \textfont6=\tenbf
  \def\tt{\fam7\tentt}%
  \textfont7=\tentt
  \baselineskip 12pt
  \let\sc=\eightrm
  \def\biglp{\mathopen{\vcenter{\hbox{\tenex\char'0}}}}%
  \def\bigrp{\mathclose{\vcenter{\hbox{\tenex\char'1}}}}%
% \dispskip 12pt plus 3pt minus 9pt
  \def\strut{{\vrule height8.5pt depth3.5pt width0pt}}%
  \rm}

\def\ninepoint{\def\rm{\fam0\ninerm}%
  \textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm
  \textfont1=\ninei \scriptfont1=\sixi \scriptscriptfont1=\fivei
  \textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy
  \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \def\it{\fam4\nineit}%
  \textfont4=\nineit
  \def\sl{\fam5\ninesl}%
  \textfont5=\ninesl
  \def\bf{\fam6\ninebf}%
  \textfont6=\ninebf
  \def\tt{\fam7\ninett}%
  \textfont7=\ninett
  \baselineskip 11pt
  \let\sc=\sevenrm
  \def\biglp{\mathopen{\hbox{\tenrm(}}}%
  \def\bigrp{\mathclose{\hbox{\tenrm)}}}%
% \dispskip 11pt plus 3pt minus 8pt
  \def\strut{{\vrule height8pt depth3pt width0pt}}%
  \rm}

\def\eightpoint{\def\rm{\fam0\eightrm}%
  \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm
  \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei
  \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy
  \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  \def\it{\fam4\eightit}%
  \textfont4=\eightit
  \def\sl{\fam5\eightsl}%
  \textfont5=\eightsl
  \def\bf{\fam6\eightbf}%
  \textfont6=\eightbf
  \def\tt{\fam7\eighttt}%
  \textfont7=\eighttt
  \baselineskip 9pt
  \let\sc=\sevenrm
  \def\biglp{\mathopen{\hbox{\ninerm(}}}%
  \def\bigrp{\mathclose{\hbox{\ninerm)}}}%
% \dispskip 9pt plus 2pt minus 6pt
  \def\strut{{\vrule height7pt depth2pt width0pt}}%
  \rm}
% Page layout
\hsize 29pc  \vsize 44pc  \maxdepth 2pt  \parindent 3pc
\edef\pagewidth{\the\hsize} \edef\pageheight{\the\vsize}
\def\ruleht{.5pt}
\dispskip 6pt plus 3pt minus 1pt
\dispaskip 0pt plus 3pt \dispbskip 4pt plus 3pt

%\newinsert\footins
\def\footnote#1#2{{\edef\sf{\the\spacefactor}#1% that's the reference symbol
      \insert\footins{\interlinepenalty100 \let\par=\endgraf
        \splittopskip=10pt plus 1pt minus 1pt \floatingpenalty=20000
        \eightpoint\smallskip\item{#1}\strut#2\strut}%
      \spacefactor=\sf}}
\setskip\footins=12pt plus 2pt minus 4pt % space added when footnote is present
%\setcount\footins=1000 % footnote magnification factor (1 to 1)
\setdimen\footins=30pc % maximum footnotes per page

%\newinsert\trailer
%\setskip\trailer=12pt plus 20pc minus 4pt % white space before closing quotes
%\setcount\trailer=1000
%\setdimen\trailer=\pageheight

\newinsert\margin
\setdimen\margin=10000pt

\let\iftitle=\no % \iftitle is \yes for pages without heading
\def\titlepage{\let\iftitle=\yes}
\def\rhead{} % \rhead contains the running headline

\def\leftheading{\hbox to \pagewidth{%
    \vbox to 10pt{}% strut to position the baseline
    \llap{\tenbf\number\count0\hskip1pc}% folio to left of text
    \tenit\rhead\hfil% running head flush left
    }}
\def\rightheading{\hbox to \pagewidth{%
    \vbox to 10pt{}% strut to position the baseline
    \hfil\tenit\rhead% running head flush right
    \rlap{\hskip1pc\tenbf\number\count0}% folio to right of text
    }}

\def\onepageout#1{\shipout\vbox{ % here we define one page of output
    \baselineskip=0pt\lineskip=0pt % butt the boxes together
    \vbox to 3pc{ % this part goes on top of the 44pc pages
      \iftitle % the next is used wfor title pages
        \global\let\iftitle=\no % reset \tpage
        % on title pages we set corner rules for camera alignment
	% because of "sinkage" (put this term in the index)
        \hbox to \pagewidth{\vrule width 1pc height\ruleht \hfil
          \vrule width 1pc}
        \hbox to \pagewidth{\llap{\sevenrm(page \number\count0)\hskip 1pc}%
          \vrule height1pc width\ruleht depth0pt
          \hfil \vrule width\ruleht depth0pt}
      \else\ifeven0 \leftheading\else\rightheading\fi\fi
      \vfill} % this completes the \vbox to 3pc
% \boxmaxdepth=\the\maxpagedepth
    \vbox to \pageheight{
      \ifabsent\margin\else % marginal info is present
        \moveright 31pc\vbox to 0pt{\vskip4pt\box\margin \vss}\fi
      #1 % now insert the main information
%     \ifabsent\trailer\else % trailer info is present
%       \ifeven0\vfill % trailer is placed only on odd-numbered pages
%       \else\vskip\skip\trailer \box\trailer\fi\fi
      \ifabsent\footins\else % footnote info is present
        \vskip\skip\footins \vskip-3pt
        \hrule height\ruleht width\pagewidth \vskip-\ruleht \vskip3pt
        \unbox\footins\fi
      } % this completes the \vbox to \pageheight
    }
  \bumppagenumber}

\output{\onepageout{\unbox255}
% \ifabsent\trailer\else\onepageout{}\fi
  }

\def\indexoutput{} % to be defined in due time
% Chapter formatting
% The preface and table of contents are formatted in place, not here

\newcount\exno % for the number of exercises in the current chapter

\outer\def\beginchapter#1 #2#3. #4\par{\setcount\exno=0
  \def\chapno{#2#3}
  \ifeven0 \else
    \errmessage{You had too much text on that last page; I'm backing up}
    \advcount0 by -1 \fi
  \titlepage
  \def\\{ } % \\'s in the title will be treated as spaces
  \message{#1 #2#3:} % show the chapter title on the terminal
  \xdef\rhead{#1 #2#3: #4}
  {\def\\{#3}
    \ifx\empty\\ \rjustline{\inchhigh #2\kern-.04em}
    \else\rjustline{\inchhigh #2\kern-.06em#3\kern-.04em}\fi
    \vskip .5in
    \baselineskip 36pt \lineskiplimit 1pt \lineskip 12pt
    \let\\=\cr % now the \\'s are line dividers
    \halign{\hbox to\the\hsize{\titlefont\hfil##}\\#4\unskip\\}
    \vfill\eject} % output the chapter title page
  \tenpoint
  \noindent\ignorespaces} % First paragraph of chapter is not indented

%\outer\def\endchapter{\begingroup\obeylines\gatherquotes}
%\long\def\gatherquotes#1\eject{\vfill
%  \eightpoint
%  \parfillskip 0pt
%  \leftskip\the\parindent plus 40pc
%  \let\rm=\eightss \let\sl=\eightsss
%  \everypar{\sl}
%  \null\insert\trailer{\vbox{#1}}
%  \eject\endgroup}

\outer\def\endchapter{\ifeven0\vfill\eject\null\else\fi \beginquotes}
\def\beginquotes{\begingroup\bigskip\vfill
  \def\eject{\endgroup\eject}
  \obeylines
  \eightpoint
  \baselineskip 10pt
  \parfillskip 0pt
  \interlinepenalty 10000
  \leftskip 0pt plus 40pc minus \the\parindent
  \let\rm=\eightss \let\sl=\eightsss
  \everypar{\sl}}
\def\author#1(#2){\smallskip\noindent\rm--- #1\unskip\enspace(#2)}
% Composition macros
\let\endgraf=\par
\let\lb={ \let\rb=}
\hyphenation{man-u-script man-u-scripts}
\def\proofmode{T} % this should be F when making camera-ready copy
\def\parbreak{\hfil\break\indent}
% some of this (like the next few lines) could well go into PLAIN:
{\catcode`\ =13 \gdef\activespaces{\catcode`\ =13\def {\ }\relax}}

\def\<#1>{\hbox{$\langle$#1$\rangle$}}
\def\oct#1{\hbox{\rm\char'16\kern-.2em\it#1\/\kern.05em}} % octal constant
\def\hex#1{\hbox{\rm\char'26\tt#1}} % hexadecimal constant
\def\pt{{\rm pt}} % units of points, in math formulas.
\def\wedge{\hskip0pt plus2pt} % a little stretchability, in a pinch

% macros for non-centered displays
\newdimen\next
\setdimen\next=\the\hsize
\advdimen\next by \minusthe\parindent
\advdimen\next by \minusthe\parindent
\edef\dbox{\hbox to\the\dimen\next}
\divdimen\next by 58 \varunit=\the\dimen\next % illustrations in Ch.12
\def\display#1${\dbox{$\displaystyle{#1}$\hss}$}
%\def\displaybox#1{\dbox{#1\hss}}
%\def\displayvbox#1{\dbox{\vbox{#1}\hss}}
\def\finishdisplay#1{\hss\rb$$}
{\catcode`$=13
  \gdef\displaybox#{\ddefs\lb\catcode`$=3 \let\next}
  \gdef\displayvbox#{\ddefs\vbox\lb\catcode`$=3 \let\next}
  \gdef\ddefs{\catcode`$=13 \let$=\finishdisplay \dbox\lb}
  }

% macros for verbatim scanning
\def\endlist{\endlist}
\def\uncatcode#1{\ifx#1\endlist\let\next=\relax
  \else\catcode`#1=12 \let\next=\uncatcode\fi\next}
\def\ttverbatim{\begingroup
  \expandafter\uncatcode\specials % all catcodes but \| are now 11 or 12
  \parskip 0pt
  \activespaces \obeylines \ttdefs}
{\catcode`\_=13 \catcode`\↑=13 \catcode`\~=13 \catcode`\↓=13
  \gdef\ttdefs{\catcode`\_=13 \def_{{\char'32}}%
    \catcode`\↑=13 \def↑{{\char'17}}%
    \catcode`\~=13 \def~{{\char'24}}%
    \catcode`\↓=13 \def↓{{\char'176}}%
    \ifmath \def↑{{\char'136}}\fi
    \tt}}
\let\ifmath=\no % when this is \yes, we get up-arrows instead of circumflexes

\def\begintt{$$\let\par=\endgraf \ttverbatim
  \catcode`\|=0 \rightskip-5pc \ttfinish}
{\catcode`\|=0 |catcode`|\=12 % | is temporary escape character
  |obeylines % end of line is active
  |gdef|ttfinish#1↑↑M#2\endtt{|vbox{#2}|endgroup$$}}

\catcode`\|=13
\def\ttglue{.5em plus .25em minus .15em}
{\catcode`\↑↑M=13
  \gdef|{\ttverbatim \spaceskip\ttglue \let↑↑M=\  \let|=\endgroup}}
\def\ttspace{{\tt\hskip\ttglue}}

\def\vert{\hbox{\tt\char`\|}} % vertical line
\def\dn{\hbox{\tt\char'176}} % downward arrow
\def\up{\hbox{\tt\char'136}} % upward arrow
\def\uspace{\hbox{\tt\char`\ }} % visible space

\newwrite\ans
\immediate\openout\ans=answers % file for answers to exercises
\def\answer{\par\medbreak
  \immediate\write\ans{}
  \immediate\write\ans{\string\ansno\chapno.\the\count\exno:}
  \begingroup\setupcopy\copyans}
\def\setupcopy{\expandafter\uncatcode\specials \catcode`\|=12 \obeylines}
\begingroup\obeylines % carriage-returns are active
\gdef\defendans#1↑↑M#2↑↑M{\gdef\endans{#2}\endgroup} %
\gdef\copyans#1↑↑M{\def\next{#1}%
  \ifx\next\endans\let\next=\endgroup %
  \else\immediate\write\ans{\next} \let\next=\copyans\fi\next} %
% the next two lines define \endans as a sentinel for \answer
\defendans

\def\ansno#1.#2:{\medbreak\noindent
  \hbox to\the\parindent{\bf\hss#1.#2.\enspace}\ignorespaces}
\def\figure#1#2{$$\dbox{\vbox to #1{\if F\proofmode\else\hrule\vfill
      \hsize=2.5in \baselineskip 6pt \fiverm\noindent #2
      \vfill\hrule\fi}\hss}$$}

\outer\def\exercise{\medbreak
  \advcount\exno by 1
  \noindent\llap{\tenex\char'170\hskip.15em}% triangle in margin
  {\ninebf EXERCISE \bf\chapno.\the\count\exno}\par\nobreak\noindent}
\outer\def\dangerexercise{\danger \global\advcount\exno by 1
  \llap{\tenex\char'170\hskip.15em}% triangle in indented space
  {\eightbf EXERCISE \bf\chapno.\the\count\exno}\hfil\break}
\outer\def\ddangerexercise{\ddanger \global\advcount\exno by 1
  \llap{\tenex\char'170\hskip.15em}% triangle in indented space
  {\eightbf EXERCISE \bf\chapno.\the\count\exno}\hfil\break}

\outer\def\danger{\medbreak\begingroup\def\par{\endgraf\endgroup\medbreak}
  \clubpenalty10000\noindent\hang\hangafter-2
  \hbox to 0pt{\hskip\minusthe\hangindent\tenex\char127\hfill}\ninepoint}
\outer\def\ddanger{\medbreak\begingroup\def\par{\endgraf\endgroup\medbreak}
  \clubpenalty10000\noindent\hang\hangafter-2
  \hbox to 0pt{\hskip\minusthe\hangindent\tenex\char127\char127
    \hfill}\ninepoint}
\def\enddanger{\endgraf\endgroup} % omits the \medbreak

\outer\def\subsec#1. #2. {\medbreak\noindent{\it #1.\enspace#2.\quad}}

\def\bull{\vrule height .8ex width .8ex depth 0pt }
% Macros for drawing figures (leave out of Appendix E)
\def\hidehrule#1#2{\kern-#1\hrule height#1 depth#2 \kern-#2 }
\def\hidevrule#1#2{\kern-#1{\setdimen0=#1
    \advdimen0 by#2\vrule width1dm0}\kern-#2 }
% \makeblankbox puts rules at the edges of a blank box
% whose dimensions are those of \box0 (assuming nonnegative wd,ht,dp)
% #1 is rule thickness outside, #2 is rule thickness inside
\def\makeblankbox#1#2{\hbox{\lower1dp0\vbox{\hidehrule{#1}{#2}%
    \kern-#1 % overlap the rules at the corners
    \hbox to 1wd0{\hidevrule{#1}{#2}%
      \raise1ht0\vbox to #1{}% set the vrule height
      \lower1dp0\vtop to #1{}% set the vrule depth
      \hfil\hidevrule{#2}{#1}}%
    \kern-#1\hidehrule{#2}{#1}}}}
\def\maketypebox{\makeblankbox{0pt}{1pt}}
\def\makelightbox{\makeblankbox{.2pt}{.2pt}}

% \box\bigdot is a null box with a bullet at its reference point
\newbox\bigdot \newbox\smalldot
\setbox0=\hbox{$\vcenter{}$} % ht0 is the axis height
\setbox1=\hbox to 0pt{$\hss\bullet\hss$} % bullet is centered on the axis
\setbox\bigdot=\vbox to 0pt{\kern-1ht1 \kern1ht0 \box1 \vss}
\setbox1=\hbox to 0pt{$\hss\cdot\hss$} % cdot is centered on the axis
\setbox\smalldot=\vbox to 0pt{\kern-1ht1 \kern1ht0 \box1 \vss}

% \arrows makes things like ←--- text ---→
\def\arrows#1#2{% #1=width, #2=text
  {\setbox0=\hbox to .611111em{$\hss-\hss$}
    \hbox to #1{\kern-.055556em$\leftarrow$\kern-.3888889em
      \cleaders\copy0\hfil
      \kern.4em #2\kern.4em
      \cleaders\copy0\hfil
      \kern-.3888889em$\rightarrow$\kern-.055556em}}}

% \samplebox makes the outline of a box, with big dot at reference point
\def\samplebox#1#2#3#4{% #1=ht, #2=dp, #3=wd, #4=text
  {\setbox0=\vtop{\vbox to #1{\hbox to #3{}\vss}
      \nointerlineskip
      \vbox to #2{}}% now \box0 has the desired ht, dp, and wd
    \hbox{\copy\bigdot
      \vrule height.2pt depth.2pt width#3
      \kern-#3
      \makelightbox
      \kern-#3
      \raise#1\vbox{\hbox to #3{\hss#4\hss}
        \kern 3pt}}}}

% \sampleglue makes glue between sample boxes
\def\sampleglue#1#2{% #1=width, #2=text
  \vtop{\hbox to #1{\xleaders\hbox to .5vu{\hss\copy\smalldot\hss}\hfil}
    \kern3pt
    \tabskip 0pt plus 1fil
    \halign to #1{\hfil##\cr#2\cr}}}

% indexing macros
\newwrite\inx
\immediate\openout\inx=index % file for index reminders
\let\Z=\relax
\def\leftparen{(}
\def\SP{ }
\def\specialcaret{\ifmmode\def\next{↑}\else\let\next=\xref\fi\next}
\catcode`\↑=13 \let ↑=\specialcaret

\def\xref#1{\def\next{#1}\def\silent{F}%
  \ifx\next\leftparen\let\next=\silentxref
  \else\def\next{\makexref#1\endxref}\fi\next}
\def\silentxref#1){\def\silent{T}\makexref#1\endxref}

\def\makexref#1#2\endxref{\def\text{#2}%
  \if#1.\def\xreftype{1}%
    \def\next{{\tt\spaceskip\ttglue\text}}% case 1, "." means tt text
  \else\if#1:\def\xreftype{2}%
      \def\next{{\tt\char`\\\text}}% case 2, ":" means tt with backslash
    \else\if#1*\def\xreftype{3}%
        \def\next{{\tt\char`\\\text}}% case 3, "*" means a TeX primitive
      \else\if#1<\def\xreftype{4}%
          \def\next{\<\text>}% case 4, "<" means angle bracketed text
        \else\def\xreftype{0}\def\text{#1#2}\let\next=\text\fi\fi\fi\fi
  \if T\proofmode\insert\margin{\hbox{\marginstyle\text}}\fi
  {\let\number=\relax
    \edef\text{\write\inx{\Z\text\SP!\xreftype\SP\number\count0.}}%
    \text}%
  \if T\silent\ignorespaces\else\next\fi}
\def\marginstyle{\vrule height 6pt depth 2pt width 0pt \sevenrm}